package com.myzl.coal.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.myzl.coal.domain.MessageSourceRelation;
import com.myzl.coal.domain.vo.SubscribeRelationVO;

import java.util.List;

/**
 * 用户订阅消息源Service接口
 *
 * @author myzl
 * @date 2023-01-10
 */
public interface IMessageSourceRelationService extends IService<MessageSourceRelation>
{
    /**
     * 查询用户订阅消息源
     *
     * @param id 用户订阅消息源主键
     * @return 用户订阅消息源
     */
    public MessageSourceRelation selectMessageSourceRelationById(Long id);

    /**
     * 查询用户订阅消息源列表
     *
     * @param messageSourceRelation 用户订阅消息源
     * @return 用户订阅消息源集合
     */
    public List<MessageSourceRelation> selectMessageSourceRelationList(MessageSourceRelation messageSourceRelation);

    /**
     * 新增用户订阅消息源
     *
     * @param messageSourceRelation 用户订阅消息源
     * @return 结果
     */
    public int insertMessageSourceRelation(MessageSourceRelation messageSourceRelation);

    /**
     * 修改用户订阅消息源
     *
     * @param messageSourceRelation 用户订阅消息源
     * @return 结果
     */
    public int updateMessageSourceRelation(MessageSourceRelation messageSourceRelation);

    /**
     * 批量删除用户订阅消息源
     *
     * @param ids 需要删除的用户订阅消息源主键集合
     * @return 结果
     */
    public int deleteMessageSourceRelationByIds(Long[] ids);

    /**
     * 删除用户订阅消息源信息
     *
     * @param id 用户订阅消息源主键
     * @return 结果
     */
    public int deleteMessageSourceRelationById(Long id);
    /**
     * deleteByMessageSourceId
     * @param messageSourceRelation
     * @return int
     * @author  wzb
     * @date 2023/1/11
     * @description
     */
    public int deleteByMessageSourceId(MessageSourceRelation messageSourceRelation);

    /**
     * subscribe
     * @param messageSourceId
     * @param userIds
     * @return boolean
     * @author  wzb
     * @date 2023/1/10
     * @description
     */
    public boolean subscribe(Long messageSourceId,List<Long> userIds);
    /**
     * subscribeRelation
     * @param messageSourceId
     * @return java.util.List<com.myzl.common.core.domain.entity.SysUser>
     * @author  wzb
     * @date 2023/1/11
     * @description
     */
    public SubscribeRelationVO subscribeRelation(Long messageSourceId);
}
